home *** CD-ROM | disk | FTP | other *** search
/ SPACE 1 / SPACE - Library 1 - Volume 1.iso / program / 441 / dlibs12 / memavail.c < prev    next >
C/C++ Source or Header  |  1990-11-23  |  645b  |  33 lines

  1. #include <osbind.h>
  2. #include <stddef.h>
  3.  
  4. #define    MAXBLK        16
  5. #define    FREE        0x00
  6. #define    USED        0x80
  7.  
  8. extern    char    *_mblk[];        /* major memory blocks */
  9.  
  10. long memavail()
  11.     {
  12.     register int i;
  13.     register long n, tsiz = 0L, **p, *q;
  14.  
  15.     for(i=0; i<MAXBLK; ++i)
  16.         {
  17.         if((p = ((long **) _mblk[i])) == NULL)
  18.             continue;        /* skip unavailable heaps */
  19.         while(q = *p)
  20.             {
  21.             n = *q;
  22.             if(n > tsiz)        /* largest block so far */
  23.                 tsiz = n;
  24.             p = ((long **) (q + 1));
  25.             }
  26.         }
  27.     if((n = Malloc(-1L)) < 1024)
  28.         return(tsiz);
  29.     n -= (1024L + 16L);
  30.     n &= ~0x1FFL;            /* system memory available */
  31.     return((n > tsiz) ? n : tsiz);
  32.     }
  33.